package com.gengzp.rpc.core;

import com.gengzp.rpc.exception.RpcException;

import java.lang.reflect.Method;

/**
 * @ClassName RpcConsumerCoreFunc
 * @Description rpc远程调用消费者端核心方法接口
 * @Author gengzp
 * @Date 2025/8/23 18:05
 */
public interface RpcConsumerCoreFunc {

    /**
     * 执行远程调用-消费者端
     * <p>远程调用发起方的逻辑</p>
     *
     * @param remoteServiceName 远程服务名
     * @param proxy             代理实例本身
     * @param method            要调用的远程方法
     * @param args              远程调用参数数组
     * @return 远程调用结果
     */
    Object doExecuteRemoteCallConsumer(String remoteServiceName,
                                       Object proxy,
                                       Method method,
                                       Object[] args) throws RpcException;

}
